package reflect.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * java提供了一些元注解，这些注解是用来说明当前我们定义的注解的一些作用
 * @Target:该注解用于说明我们当前定义的注解可以被应用在什么位置，如果不指定，所有可以被应用的
 *         地方均可以使用该注解
 *         ElementType.TYPE表示该注解只能被应用在类上
 *         ElementType.METHOD表示该注解只能被应用在方法上
 *         ElementType.FIELD表示该注解只能被应用在成员变量上
 *         ElementType.PARAMETER表示该注解只能被应用在形参上
 *         ElementType.CONSTRUCTOR表示该注解只能被应用在构造方法上
 *
 * @Retention:保留级别
 *        对应三个值:
 *        RetentionPolicy.SOURCE:表示该注解只保留在源码中，编译后没有了
 *        RetentionPolicy.CLASS:表示该注解保留在class文件中，但是不会被保留在运行时(默认级别)
 *        RetentionPolicy.RUNTIME:表示该注解保留在运行时，【可以通过反射获得】

 */
@Target(ElementType.TYPE)
//@Target({ElementType.TYPE,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoRunClass {
}
